۱۷ روش طلایی برای ذخیره سازی فایل اکسل توسط کد نویسی VBA
ذخیره سازی فایل اکسل از دو روش کلی امکان پذیر است .
روش اول که استفاده از دستور Save است و روش دوم هم که مربوط به دستور Save As می باشد .
استفاده از این دستورات در محیط خود نرم افزار اکسل بسیار ساده است و ما هم قرار نیست به بررسی نحوه ذخیره کردن فایل ها از طریق خود نرم افزار اکسل بپردازیم .
در عوض می خواهیم در یک سطح بالاتر از کاربران معمولی و با استفاده از کدهای VBA در محیط برنامه نویسی شرایطی را فراهم کنیم که برنامه ما تنها با استفاده از کدهای مربوطه بتوانیم فایل های مورد نظر خود را ذخیره کنیم .
بنابراین با من همراه باشید تا با هم به بررسی روش ها و کدهای مختلف در این زمینه بپردازیم .
بررسی روش های مختلف ذخیره سازی فایل اکسل با استفاده از کد نویسی
همانگونه که گفتیم در خود محیط اکسل ما با استفاده از دو دستور می توانیم فایل اکسل خود را ذخیره کنیم .
حالا ما می خواهیم این دستورات را در محیط برنامه نویسی و ب استفاده از کدهای مربوطه شبیه سازی کنیم .
اول به سراغ دستور Save می رویم و کدهایی را در این زمینه مورد بررسی قرار می دهیم .
ما در این مطلب از کدهای ساده تا حالت های پیشرفته را مورد بررسی قرار می دهیم .
روش اول .
فرض کنید که ما یک فایل اکسل داریم به نام “myfile ” حالا می خواهیم این فایل اکسل را ذخیره کنیم .
برای این منظور می توانیم از کد ساده زیر استفاده کنیم .
()Sub test Workbooks("myfile.xslm").Save End Sub
روش دوم .: در این روش ما از شی ActiveWorkbook استفاده می کنیم .
ActiveWorkbook همانطور که از نام آن هم پیداست اشاره به فایل اکسلی دارد که در حال حاضر فعال بوده و ما در حال کار کردن در داخل آن هستیم .
روش سوم : ذخیره کردن تمام فایل های باز
ما در روش دوم یک فایل اکسل را ذخیره کردیم .
اما فرض کنید که ما در حال حاضر ۲ یا ۳ و یا تعداد بیشتری از اکسل داریم که در حال حاضر باز هستند .
در این صورت برای ذخیره همزمان همه آنها می توانیم از کدی مانند کد زیر استفاده کنیم .
Dim wb as workbook For Each wb In Application.Workbooks wb.Save Next wb
ما در این کدها از یک حلقه For استفاده کردیم .
روش چهارم : ذخیره کردن فایلهایی که Read only نیستند.
اول اجازه بدهید توضیحی در خصوص فایل Read only بدهم .
فایل Read only فایلی است که فقط قابل خواندن است و اگر تغییراتی در ساختار اطلاعات آن ایجاد کنیم این اطلاعات در آن را نمی توان ذخیره کرد .
برای ذخیره کردن فایل های اکسلی که در فرمتی بغیر از فقط خواندنی هستند می توان از کدی مانند زیر استفاده کرد ..
Dim wb as workbook For Each wb In Application.Workbooks If not wb ReadOnly then wb.Save End if Next wb
ما در این کد ابتدا به تمامی فایل های اکسلی که فعال هستند سر می زنیم .
سپس با استفاده از یک عبارت شرطی کنترل می کنیم که آیا فرمت این فایل بصورت فقط خواندنی هست یا نه ؟
اگر فرمت این فایل غیر خواندنی نبود آنگاه آن را ذخیره می کنیم .
روش پنجم : ذخیره کردن یک فایل اکسل با استفاده از تعریف متغیر .
در این روش ما اول یک متغیر را تعریف می کنیم و سپس با استفاده از این متغیر به ذخیره کردن فایل اکسل خود می پردازیم .
برای این روش می توانیم از کدی مانند کد زیر استفاده کنیم .
Dim wb as workbook ("set wb = workbooks("savefile.xlsm wb.save
ما در اینجا یک متغیر به نام Wb تعریف کرده و نوع آن را از نوع workbook قرار می دهیم .
سپس در این متغیر نام فایل مورد نظر خود را قرار داده و در انتها آن را ذخیره می کنیم .
روش ششم: ذخیره کردن فایل اکسل با استفاده از یک رشته متنی .
در این روش هم مانند روش قبل یک متغیر تعریف می کنیم .
با این تفاوت که متغیر ما در اینجا از نوع String یا متنی خواهد بود .
به کدهای زیر توجه کنید .
Dim wbstring as string "wbstring = "Myfile.xlsm workbooks(wbstring).save
ما در خط اول از این کد یک متغیر از نوع متن تعریف کردیم .
در خط دوم این متغیر را مقدار دهی کردیم .
و در خط سوم هم این مقدار را که در واقع همان فایل اکسل مورد نظر ماست را ذخیره کردیم .
روش هفتم : ذخیره کردن فایل اکسل با استفاده از شماره ایندکس .
حتما می دانید که ما در اکسل و برنامه نویسی VBA مفهومی داریم به نام مجموعه ها یا همان Collection
پیش از این بررسی کردیم : آشنایی با مفهوم Collection
و مطمئنا می دانید که تمامی workbook های موجود بر روی یک سیستم در داخل مجموعه ای هستند به نام Workbooks .
حالا برای اینکه هر کدام از این ورک بوکها را در داخل یک مجموعه شناسایی کنیم می توانیم از شماره ایندکس آن ورک بوک استفاده کنیم .
بعنوان مثال به کد زیر توجه کنید .
workbooks(1).save
ما در این کد اولین ورک بوک موجود در مجموعه ورک بوکها را ذخیره می کنیم .
روش هشتم : ذخیره کردن فایل اکسل با توجه به مقادیر یک محدوده .
در این روش می توانیم نام فایل مورد نظر خود را از یک سلول یا محدوده بگیریم و در نهایت آن را ذخیره کنیم .
به عنوان مثال به کدهای یر توجه کنید .
Dim wbstring as string wbstring = activeworkbook.sheets("sheet1").range("wb_save").value workbooks(wbstring).save
ذخیره کردن فایل های اکسل با استفاده از متد Save As
تا به اینجای کار ما از متد save و روش های مختلفی که برای آن وجود داشت استفاده کرده و فایل خود را ذخیره کردیم .
حالا می خواهیم به سراغ روش دوم برای ذخیره کردن فایل ها بپردازیم .
اول با هم به بررسی خود ساختار دستور Save As در محیط برنامه نویسی می پردازیم .
_,workbook object .SaveAs(FileName, FileFormat, Password, WriteResPassword _,ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution (AddToMru,TextCodepage, TextVisualLayout, Local
در ادامه با استفاده از مثال های مختلف به بررسی آرگومانهای این تابع می پردازیم.
لازم به ذکر است که وجود هیچ یک از این پارامترها ضروری نمی باشد .
اما با استفاده از این پارامترها و تنظیمات مربوط به هر یک می توان امکانات متعددی را برای ذخیره سازی فایل خود در اختیار گرفت .
با هم در اینجا به بررسی روش ها ی مختلف ذخیره سازی فایل های اکسل با استفاده از این دستور می پردازیم .
روش نهم : ذخیره کردن فایل اکسل با تعیین نام فایل
در اولین مثال ما در اینجا یک فایل را تحت یک نام خاص ذخیره می کنیم .
"ActiveWorkbook.SaveAs Filename:= "Myfile
کدهای زیر نیز نتیجه ای مشابه را در بر دارد .
"ActiveWorkbook.SaveAs "myfile
یا در روشی دیگر می توانیم نام فایل خود را در یک متغیر قرار داده و با استفاده از آن فایل خود را ذخیره کنیم .
به کدهای زیر توجه کنید .
Dim wbstring as string "wbstring = "myfile ActiveWorkbook.SaveAs Filename:= wbstring
هر سه کد بالا فایل مورد نظر را در پوشه ای ذخیره می کند که در حال حاضر در آن قرار دارد .
اما اگر بخواهیم یک نسخه از فایل خود را در درایو دیگری ذخیره کنیم چه باید بکنیم .
روش دهم : ذخیره فایل در یک درایو جدید .
برای ذخیره کردن یک نسخه از فایل جاری در درایوی غیر از درایوی که فایل ما در آن قرار دارد می توانیم از کد زیر استفاده کنیم .
"ActiveWorkbook.SaveAs Filename:= "D:myfile
ما در اینجا نسخه ای از فایل اکسل خود را با نام “myfile ” و در درایو D ذخیره می کنیم.
و به طریق مشابه روش های قبلی می توانیم مسیر ذخیره فایل را در ک متغیر قرار داده و با استفاده از ان فایل خود را ذخیره کنیم .
Dim myfile as string "myfile = "C:\new ActiveWorkbook.SaveAs Filename:= myfile
روش یاز دهم : ذخیره فایل با در نظر گرفتن فرمت آن .
وقتی که ما یک فایل اکسل را ذخیره می کنیم از فرمت پیشفرض خود برای ذخیره کردن استفاده می کند .
در این روش می خواهیم فایل اکسل خود را ذخیره کرده و نوع فرمت مورد نظر خود را نیز به آن معرفی کنیم .
برای این منظور از کدهای زیر استفاده می کنیم .
Dim myfile as string "myfile= "D:\new.xlsb ActiveWorkbook.SaveAs Filename:= myfile
ما در اینجا فایل خود را در داریو مورد نظر و با فرمت xslb . ذخیره می کنیم .
روش دوازدهم : ذخیره فایل به همراه تعریف پسورد برای آن
خیلی از مواقع نیاز پیدا می کنیم که بنابر هر دلیل فیال اکسل خود را از اینکه در معرض استفاده سایرین قرار گیرند حفظ کنیم .
برای این منظور بهترین گزینه این است که برای فایل خود یک پسورد یا گذرواژه اکسلی تعریف کنیم.
برای این کار با استفاده در دستور Save As به سراغ پارامتر Password می رویم .
برای این منظور به کدهای زیر توجه کنید .
"ActiveWorkbook.SaveAs Filename:= "D:\myexcelfile.xlsx", Password:= "softpluse
در اینجا من فایل اکسل خود را با عنوان myexcelfile در درایو D ذخیره کرده ام .
و برای اینکه این فایل را از دسترس دیگران خارج کنم برای آن یک پسورد در نظر گرفته ام .
بنابراین هرگاه که کاربری بخواهد به اطلاعات این فایل دسترسی پیدا کند ابتدا باید این پسورد را در اختیار برنامه قرار دهد تا برنامه اطلاعات خود را در اختیار کاربر قرار دهد .
روش سیزدهم : ذخیره فایل به همراه تعریف پسورد برای آن
عنوان این روش با روش قبلی یکی است اما در عمل با هم تفاوت دارند .
در روش اول تا وقتی که کاربر پسورد تعریف شده را در اختیار برنامه قرار دهد اطلاعاتی برای او به نمایش در نمی آید .
اما ما در این روش می خواهیم کاری کنیم که اگر کاربر پسورد را وارد کرد اما این پسورد نادرست بود برنامه اطلاعات را در اختیار کاربر قرار بدهد اما کاربر فقط قادر به خواندن اطلاعات باشد و به هیچ وجه نتواند در این اطلاعات دخل و تصرفی نماید .
به اصطلاح فنی می خواهیم فایل در حالت Read-only به کاربر نمایش داده شود .
برای این منظور به سراغ پارامتر WriteResPassword می رویم .
به کدهای زیر توجه کنید .
"ActiveWorkbook.SaveAs Filename:= "D:\myfile.xlsx", WriteRes:= "softpluse
در اینجا دو حالت پیش می آید .
یا کاربر پسورد مورد نظر ما را به درستی وارد می کند که در این صورت کل برنامه در اختیار کاربر قرار می گیرد .
در حالت دوم اگر پسورد وارد شده نادرست باشد فایل بصورت Read-only در اختیار کاربر قرار می گیرد .
روش چهاردهم : ذخیره فایل به صورت فقط خواندنی
اگر بخواهیم فایل اکسل خود را به نحوی ذخیره کنیم که برای کاربر فقط به صورت Read Only باشد می توانیم از کدی مانند کد زیر استفاده کنیم.
ActiveWorkbook.SaveAs Filename:= "C:\softpluse.xlsx", ReadOnlyRecommended:= TRUE
در این حالت وقتی که کاربر فایل ما را باز می کند در ابتدای کار با یک پیغام مواجه می شود که به او اعلام می کند این فایل در حالت Read Only می باشد .
روش پانزدهم: نمایش کادر ذخیره قبل از بستن فایل
در این روش می توانیم از کدهایی استفاده کنیم که با اجرای این کدها قبل از اینکه فایل ما بسته شود یک پنجره به کاربر نمایش داده شود تا مسیر و نام مد نظر را برای ذخیره کردن فایل از کاربر دریافت کند .
برای این منظور می توانیم از کدی مانند زیر استفاده کنیم .
Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.GetSaveAsFilename End Sub
دقت کنید که در این جا ما کدهای خود را در رویداد BeforClose وارد کرده ایم .
یعنی اگر کاربر بر روی دکمه بستن فایل کلیک کند قبل از اینکه فایل مورد نظر بسته شود کدهای ما اجرا می شود .
روش شانزدهم : نمایش کادر ذخیره قبل از بستن فایل با در نظر گرفتن یک نام پیشفرض
در روش قبلی ما کادر ذخیره را برای کاربر نمایش می دادیم و باکس مربوط به نام فایل را خالی قرار می دادیم .
اما اگر بخواهیم بصورت پیشفرض یک نام برای فایل خود در نظر بگیریم می توانیم از کدی مانند کد زیر استفاده کنیم .
Private Sub Workbook_BeforeClose(Cancel As Boolean) "Application.GetSaveAsFilename InitialFileName:="softpluse.xlsx End Sub
روش هفدهم : ذخیره فایل جاری در یک فایل جدید
در تمامی روش هایی که ت به اینجا با هم مورد بررسی قرار دادیم ما اطلاعات خود را در داخل فایل جاری در اکسل ذخیره می کردیم .
اما در این روش می خواهیم کاری کنیم که یک فایل اکسل جدید را ایجاد کرده و یک نسخه از اطلاعات ما در داخل این فایل جدید ذخیره شوند .
برای این منظور ما از کدهایی مانند کد زیر استفاده می کنیم .
Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim wb As Workbook Set wb = Workbooks.Add "wb.SaveAs Filename:="D:\softpluse .xlsx End Sub
در اینجا مطلب مربوط به ذخیره سازی فایل اکسل را در ۱۷ روش مختلف با هم بررسی کردیم .
خوشحال می شویم که نظرات خود را در خصوص این مطلب در بخش نظرات درج کنید .
آیا این مطلب و مطالبی از این دست برای شما مفید واقع شده است .
نظرات خود را با ما در میان بگذارید
در ضمن ما در پیج اینستاگرام خود هر روز آموزش های بسیار کاربردی در زمینه کار با نرم افزار های آفیسدر قالب ویدئو های کوتاه چند دقیقه ای منتشر می کنیم .
برای مشاهده این آموزش ها توصیه می کنیم با کلیک بر روی تصویر زیر به جمع ما در اینستاگرام بپیوندید .
منتظر تان هستیم .
مطالب زیر را حتما مطالعه کنید
Xlookup در اکسل- تابعی با کلی قابلیت های کاربردی
تابع Hlookup در اکسل💥نکات و ترفندهای کار با آن +ویدئو
تابع فیلتر در اکسل 💥به همراه یک مثال کاربردی
تابع سفارشی در اکسل 💥چطور تابع مدنظرتان را در اکسل ایجاد کنید ؟
تابع countif در اکسل💚راهنمای کامل کار با آن
زوم کردن در سلول های اکسل + ۳ روش مختلف
5 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
با سلام
ضمن تشکر از مطالب مفید شما، یک سوال دارم که اگه جواب بدین ممنون میشم.
بعد از نوشتن برنامه در ماکرو اکسل، میخوام فایل رو ذخیره کنم. مشکلم اینجاست که می خوام فایلم در پوشه دانلود اکانتم در سیستم جاری ذخیره بشه. یعنی مثلا فایل در پوشه C:\Users\mahdi\Downloads ذخیره بشه و در این آدرس “mahdi” نام یوزر اکانت من است. حالا کد یا دستور لازم رو پیدا نمی کنم.
فقط می دونم دستور userprofile در CMD به آدرسی که در بالا نوشتم اشاره میکنه. ولی پیاده سازی اون رو تو ماکرو نویسی اکسل پیدا نمی کنم.
خیلی ممنونم اگر راهنمایی کنین
سلام
میخوام فایل بصورت xlsx ذخیره بشه
هنگام اجرا پیام اینکه ماکرو و دستورات همراه ذخیره نمی شه با فایل و آیا مطمئید بالا میاد
میخوام این پیغام نشون داده نشه هنگام احرا یا اینکه خودکار yes زده شه و رد شه
چیکار باید کرد؟
این کار با استفاده از برنامه نویسی vba امکان پذیر است در اینترنت جستجو کنید کدهای زیادی در این زمینه وجود دارد . اگر لازم شد در مطلبی در مورد ان صحبت خواهم کرد
سلام وقت بخیر
ماکروی خروج ازفایل را وقتی از درون یک فایل اجرا می کنم بعد از اینکه فایل مربوطه بسته می شود سراغ فایلهای باز دیگر هم می رود و ماکروی فایل قبلم را اجرا می کند درحالیکه ماکروی هر فایل مستقل را در ورک بوک همان فایل خودش ذخیره کردم . می خواهم مورد به مورد و مستقل فایل هایم بسته شود نه همه با هم .درضمن ماکروی بنده بصورت زیر است حتی نام ماکروی هر فایل را متفاوت گذاشتم ولی نشد . سپاسگزارم
Sub Quit()
Dim sw As String
sw = InputBox(“آیــــا مایل به خروج از برنامه می باشید?”)
If userName = “بله” Then
Application.ActiveWorkbook.Save
Else
Application.Quit
End If
End Sub
سلام ، من میخوام با استفاده از ماکرو فایلم تو آدرسی که مد نظرم هست ذخیره شه و اسم فایل رو از کلیپ برد دستگاه برداره، امکانش هست؟ اگر امکان پذیره چه فرمولی باید استفاده کنم